var net = require('net');
var file = require('fs');

var server = net.createServer();
var writeStream = file.createWriteStream('./message.txt');



server.on("connection", function(socket){

	// address方法--获取socket对象信息
	var address = socket.address();
	console.log("socket端口信息：%j", address);


	// data事件--读取客户端发送的流数据
	socket.setEncoding('utf8');
	socket.on('data', function(data){
		// data参数：Buffer：未使用socket端口对象的setEncoding方法指定编码；string: 使用
		// console.log(data.toString());
		console.log(data);
		console.log("已收到%d字节数据", socket.bytesRead);
	});

	
	// pipe方法--将客户端发送的流数据书写到文件等其他目标对象中
	// 第二个参数end指定为true（默认），数据读取完毕立即结束写操作
	// 第二个参数end指定为false，当客户端不会再发送新的数据（例如客户端关闭连接），不会立即结束对象写操作，可以在目标对象中补充写入一些数据
	// socket.pipe(writeStream);
	socket.pipe(writeStream, {end: false});


	// unpipe方法--取消目标对象的写入操作
	// setTimeout(function(){
	// 	writeStream.end("goodBye! ~ ");
	// 	socket.unpipe(writeStream);
	// }, 5000);


	// end事件--客户端连接被关闭
	socket.on('end', function(){
		writeStream.end('server disconnected.');
		console.log("客户端连接被关闭");
	});


});

server.listen(8430, "localhost");


